package familySetting

import (
	"fmt"
	"github.com/gofiber/fiber/v2"
	"sg-backend/global"
	"sg-backend/model/paylog"
)

type _deleteType struct {
	Key uint `json:"key"`
}

func DeleteFamilyType(ctx *fiber.Ctx) error {

	// 解释数据
	var dataDto _deleteType
	if err := ctx.BodyParser(&dataDto); err != nil {
		return ctx.JSON(fiber.Map{
			"status":  "error",
			"message": fmt.Sprintf("数据解释出错！%s", err),
		})
	}

	// 成功提取数据
	// 先获取原来的数据，判断是否有重复
	// 验证是否正在使用中
	var useCheck []paylog.PayLog
	err := global.DB.Where("family_type_id = ?", dataDto.Key).Find(&useCheck)
	if err.Error != nil {
		return ctx.JSON(fiber.Map{
			"status":  "error",
			"message": fmt.Sprintf("数据验证解释出错！%v", err.Error),
		})
	}
	if err.RowsAffected > 0 {
		return ctx.JSON(fiber.Map{
			"status":  "error",
			"message": fmt.Sprintf("此成员有流水关联，不能删除！"),
		})
	}

	// 准备从数据库中删除
	delObj := paylog.IncomeType{Id: dataDto.Key}

	// 更新到数据库
	dr := global.DB.Delete(&delObj)
	if dr.Error != nil {
		return ctx.JSON(fiber.Map{
			"status":  "error",
			"message": "从数据库中删除失败！" + dr.Error.Error(),
		})
	}

	// 返回
	return ctx.JSON(fiber.Map{
		"status":  "done",
		"message": "删除成功！",
	})
}
